﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using EntityLayer;
using DataLayer.EF;

namespace DataLayer.CLASES_DAO
{
    public class clsT_UsuarioDAO
    {

        private BD_GESTIONACTIVOSEntities ContextoDeObjs = new BD_GESTIONACTIVOSEntities();
        private Seguridad_GestionActivos_Entities SEGURIDAD = new Seguridad_GestionActivos_Entities();
        public bool Insertar(T_Usuario_Sistema obj)
        {
            try
            {
                ContextoDeObjs.AddObject("T_Usuario_Sistema", obj);
                ContextoDeObjs.SaveChanges();
            }
            catch (Exception ex)
            {
                return false;
                throw;
            }
            return true;
        }

        public bool Modificar(T_Usuario_Sistema obj)
        {
            try
            {
                ContextoDeObjs.AttachTo("T_Usuario_Sistema", obj);
                ContextoDeObjs.ObjectStateManager.ChangeObjectState(obj, System.Data.EntityState.Modified);
                ContextoDeObjs.SaveChanges();
            }
            catch (Exception ex)
            {
                return false;
                throw;

            }
            return true;
        }
        public bool Eliminar(T_Usuario_Sistema obj)
        {
            try
            {
                ContextoDeObjs.AttachTo("T_Usuario_Sistema", obj);
                ContextoDeObjs.DeleteObject(obj);
                ContextoDeObjs.SaveChanges();
            }
            catch (Exception)
            {
                return false;
                throw;
            }
            return true;
        }
        public List<T_Usuario_Sistema> listar()
        {

            List<T_Usuario_Sistema> lista = new List<T_Usuario_Sistema>();
            try
            {
                var q = from c in ContextoDeObjs.T_Usuario_Sistema
                        select c;
                lista = q.ToList();

            }
            catch (Exception)
            {
                lista = null;
                throw;
            }
            return lista;
        }
        public List<T_Usuario_Sistema> listarUsuarioxID(string id)
        {

            List<T_Usuario_Sistema> lista = new List<T_Usuario_Sistema>();
            try
            {
                var q = from c in ContextoDeObjs.T_Usuario_Sistema
                        where c.CodigoUsuario == id
                        select c;
                lista = q.ToList();

            }
            catch (Exception)
            {
                lista = null;
                throw;
            }
            return lista;
        }
        public List<T_Usuario_Sistema> getUsuarioArea(string user)
        {

            List<T_Usuario_Sistema> lista = new List<T_Usuario_Sistema>();
            try
            {
                var q = from c in ContextoDeObjs.T_Usuario_Sistema
                        from s in SEGURIDAD.T_Usuario
                        where c.CodigoUsuario == s.COD_USUARIO_VEH
                        select c;

                lista = q.ToList();

            }
            catch (Exception)
            {
                lista = null;
                throw;
            }
            return lista;
        }

        public List<T_Grupo> getGrupoUsuario(string idUsuario)
        {
            List<T_Grupo> lista=new List<T_Grupo>();

            try
            {
                var q = from tu in SEGURIDAD.T_Usuario
                        from tus in ContextoDeObjs.T_Usuario_Sistema
                        from tgr in SEGURIDAD.T_Usuario_Grupo
                        from tg in SEGURIDAD.T_Grupo
                        where tus.CodigoUsuario==tu.COD_USUARIO_VEH && 
                        tu.ID_USUARIO==tgr.ID_USUARIO && 
                        tg.ID_GRUPO==tgr.ID_GRUPO && 
                        tus.CodigoUsuario==idUsuario
                        select tg;
                lista = q.ToList();
            }
            catch (Exception)
            {
                throw;
            }
            return lista;
        }

        public List<T_Grupo> getGrupo(string idUsuario)
        {
            List<T_Grupo> lista = new List<T_Grupo>();
            try
            {
                var q = (from gr in SEGURIDAD.T_Usuario_Grupo
                         from gru in SEGURIDAD.T_Grupo
                         where gr.ID_GRUPO == gru.ID_GRUPO &&
                         gr.ID_USUARIO == idUsuario
                         select gru).Take(1);
                lista = q.ToList();
            }
            catch (Exception)
            {
                
                throw;
            }

            return lista;
        }
    }
}
